#ifndef __MENU_CONFIG_H
#define __MENU_CONFIG_H

#ifdef __cplusplus
extern "C"
{
#endif

#include "./sys_param/sys_param.h"
#include "./language/language.h"
#include "./BSP/KEY/key_manager.h"
#include "./BSP/LCD/lcd.h"
#include "./BSP/LCD/lcd_init.h"
#include <string.h>
#include <stdio.h>

/* 菜单系统配置参数 - 使用宏定义 */
#define MENU_FONT_SIZE 32                                                /* 菜单字体大小(高度) */
#define VALUE_FONT_SIZE 64                                               /* 数值显示字体大小 */
#define MENU_FONT_WIDTH (MENU_FONT_SIZE / 2)                             /* 字体宽度 = 高度/2 */
#define MENU_ITEM_HEIGHT MENU_FONT_SIZE                                  /* 菜单项高度 */
#define MENU_TITLE_LINES 1                                               /* 标题行数 */
#define MENU_TITLE_OFFSET (MENU_TITLE_LINES * MENU_FONT_SIZE)            /* 标题偏移量 */
#define MENU_TITLE_HEIGHT MENU_FONT_SIZE                                 /* 菜单标题高度（像素），等于字体高度 */
#define MENU_MAX_SHOW_NUM ((LCD_H - MENU_TITLE_HEIGHT) / MENU_FONT_SIZE) /* 每页最多显示的菜单项数（自动根据屏幕高度LCD_H和字体高度MENU_FONT_SIZE计算，减去一行标题） */

/* 计算标题居中位置的宏 - 支持UTF-8和GB2312正确计算显示宽度 */
/* 注意：第一个参数现在是字符串指针，不再是字符串长度 */
#define CALC_TITLE_CENTER_X(str_ptr, lcd_width) ((lcd_width - LCD_GetStringDisplayWidth((const uint8_t*)(str_ptr), MENU_FONT_SIZE)) / 2)

/* 计算菜单项Y坐标的宏 */
#define CALC_MENU_ITEM_Y(index) ((MENU_TITLE_OFFSET) + 4 + ((index) * MENU_ITEM_HEIGHT))

/* 计算双标题菜单项Y坐标的宏 */
#define CALC_DOUBLE_TITLE_MENU_ITEM_Y(index) ((MENU_TITLE_OFFSET * 2) + 4 + ((index) * MENU_ITEM_HEIGHT))

#ifdef __cplusplus
}
#endif

#endif
